package ar.uade.distribuidas.tpo.srv.servlets;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



import ar.uade.distribuidas.tpo.base.dominiodto.OrdenDeCompraDTO;
import ar.uade.distribuidas.tpo.srv.dao.OrdenDeCompraXmlDAO;
import ar.uade.distribuidas.tpo.srv.delegado.BD;

/**
 * Servlet implementation class Comprar
 */
@WebServlet("/Comprar")
@MultipartConfig(fileSizeThreshold=1024*1024*2, // 2MB
maxFileSize=1024*1024*10,      // 10MB
maxRequestSize=1024*1024*50)   // 50MB
public class Comprar extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public Comprar() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		RequestDispatcher dispatcher = request.getRequestDispatcher("WEB-INF/jsp/comprar.jsp");

		try{
			String ordenesDeCompraString ="";
			
			List<OrdenDeCompraDTO> listOC = BD.getInstance().comprarMercaderia();
			
			
			for(OrdenDeCompraDTO oc : listOC){
				ordenesDeCompraString += OrdenDeCompraXmlDAO.saveOrdenCompraToXml(oc);	
				
			}
			request.setAttribute("xmlgen1", ordenesDeCompraString);
			
			request.setAttribute("allok", "La solicitud fue procesada correctamente.");

			request.getRequestDispatcher("/jsp/comprar.jsp").forward(request, response);

			
			
		} catch (Exception e) {

			request.setAttribute("allerror", "Hubo un error al procesar la solicitud.");
			request.getRequestDispatcher("/jsp/comprar.jsp").forward(request, response);


		}

	}
	/*
	private List<OrdenDeCompraDTO> obtenerOrdenCompra (List<OrdenDePedidoDTO> opDTO){
		int num =0;
		List<ProveedorDTO> listProveedor = getProveedores(opDTO);
		List<OrdenDeCompraDTO> listOC = new ArrayList<OrdenDeCompraDTO>();
		for (ProveedorDTO p : listProveedor){
			List<ItemListaRodamientoDTO> rod = new ArrayList<ItemListaRodamientoDTO>();
			for (OrdenDePedidoDTO o : opDTO){
				for (ItemPedidoDTO ip : o.getItemsPedido()){
					if (ip.getItem().getProveedor().getCuil() == p.getCuil()){
						ItemListaRodamientoDTO irdto = new ItemListaRodamientoDTO(num+1, ip.getItem().getItem().getRodamiento(), ip.getItem().getItem().getCantidad());
						rod.add(irdto);
					}
				}
			}
			OrdenDeCompraDTO oc = new OrdenDeCompraDTO(num+1,new LocalDate(),EstadoOC.PENDIENTE,p);
			oc.setItem(rod);
			listOC.add(oc);
		}
		
		return listOC;
	}
	
	private List<ProveedorDTO> getProveedores (List<OrdenDePedidoDTO> opDTO){ 
		List<ProveedorDTO> listProveedor = new ArrayList<ProveedorDTO>();
		for (OrdenDePedidoDTO op : opDTO){
			for (ItemPedidoDTO i : op.getItemsPedido()){
//				listProveedor.add(i.getItem().getItem().getProveedor());
			}
		}
		return listProveedor;
	}
	*/
}
